﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Estrutura;


namespace Banco
{

    /// <summary>
    /// Summary description for BD_Pagamento_detalhe
    /// </summary>
    public class BD_Pagamento_detalhe
    {
        #region variaveis_globais

        acessaDB.conectaDBMSSQLServer sqlServer = new conectaDBMSSQLServer();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Pagamento_detalhe()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
        }
        public BD_Pagamento_detalhe(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["SQLServerConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public System.Data.DataSet _retorna_Pagamento_detalhe(
                                                string PAGAMENTO_DETALHE_ID,
                                                string PAGAMENTO_ID,
                                                string FORMA_PAGAMENTO_ID,
                                                string PDT_PARCELA,
                                                string PDT_DATAPAMENTO
                                                )
        {

            if (string.IsNullOrEmpty(PAGAMENTO_DETALHE_ID)) PAGAMENTO_DETALHE_ID = "''";
            if (string.IsNullOrEmpty(PAGAMENTO_ID)) PAGAMENTO_ID = "''";
            if (string.IsNullOrEmpty(FORMA_PAGAMENTO_ID)) FORMA_PAGAMENTO_ID = "''";
            if (string.IsNullOrEmpty(PDT_PARCELA)) PDT_PARCELA = "''";
            if (string.IsNullOrEmpty(PDT_DATAPAMENTO)) PDT_DATAPAMENTO = "''";

            string sql = "SELECT " +
                                  "PAGAMENTO_DETALHE.PAGAMENTO_DETALHE_ID, " +
                                  "PAGAMENTO_DETALHE.PAGAMENTO_ID, " +
                                  "PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID, " +
                                  "PAGAMENTO_DETALHE.PDT_PARCELA, " +
                                  "PAGAMENTO_DETALHE.PDT_DATAPAMENTO " +
                            "FROM PAGAMENTO_DETALHE " +
                            "LEFT JOIN FORMA_PAGAMENTO ON FORMA_PAGAMENTO.FORMA_PAGAMENTO_ID = PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID " +
                            "LEFT JOIN PAGAMENTO ON PAGAMENTO.PAGAMENTO_ID = PAGAMENTO_DETALHE.PAGAMENTO_ID " +
                            "WHERE " +
                            "      (PAGAMENTO_DETALHE.PAGAMENTO_DETALHE_ID = " + PAGAMENTO_DETALHE_ID + "  OR " + PAGAMENTO_DETALHE_ID + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.PAGAMENTO_ID = " + PAGAMENTO_ID + "  OR " + PAGAMENTO_ID + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID = " + FORMA_PAGAMENTO_ID + "  OR " + FORMA_PAGAMENTO_ID + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.PDT_PARCELA = " + PDT_PARCELA + "  OR " + PDT_PARCELA + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.PDT_DATAPAMENTO = " + PDT_DATAPAMENTO + "  OR " + PDT_DATAPAMENTO + " = '') ";

            return sqlServer.retornaDataSet(sql, conectionString);

        }


        public List<ES_Pagamento_detalhe> _obter_Pagamento_detalhe(
                                                string PAGAMENTO_DETALHE_ID,
                                                string PAGAMENTO_ID,
                                                string FORMA_PAGAMENTO_ID,
                                                string PDT_PARCELA,
                                                string PDT_DATAPAMENTO
                                                )
        {

            if (string.IsNullOrEmpty(PAGAMENTO_DETALHE_ID)) PAGAMENTO_DETALHE_ID = "''"; else PAGAMENTO_DETALHE_ID = Util.retonarAspas(PAGAMENTO_DETALHE_ID + " % ");
            if (string.IsNullOrEmpty(PAGAMENTO_ID)) PAGAMENTO_ID = "''"; else PAGAMENTO_ID = Util.retonarAspas(PAGAMENTO_ID + " % ");
            if (string.IsNullOrEmpty(FORMA_PAGAMENTO_ID)) FORMA_PAGAMENTO_ID = "''"; else FORMA_PAGAMENTO_ID = Util.retonarAspas(FORMA_PAGAMENTO_ID + " % ");
            if (string.IsNullOrEmpty(PDT_PARCELA)) PDT_PARCELA = "''"; else PDT_PARCELA = Util.retonarAspas(PDT_PARCELA + " % ");
            if (string.IsNullOrEmpty(PDT_DATAPAMENTO)) PDT_DATAPAMENTO = "''"; else PDT_DATAPAMENTO = Util.retonarAspas(PDT_DATAPAMENTO + " % ");

            string sql = "SELECT " +
                                  "PAGAMENTO_DETALHE.PAGAMENTO_DETALHE_ID, " +
                                  "PAGAMENTO_DETALHE.PAGAMENTO_ID, " +
                                  "PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID, " +
                                  "PAGAMENTO_DETALHE.PDT_PARCELA, " +
                                  "PAGAMENTO_DETALHE.PDT_DATAPAMENTO " +
                            "FROM PAGAMENTO_DETALHE " +
                            "LEFT JOIN FORMA_PAGAMENTO ON FORMA_PAGAMENTO.FORMA_PAGAMENTO_ID = PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID " +
                            "LEFT JOIN PAGAMENTO ON PAGAMENTO.PAGAMENTO_ID = PAGAMENTO_DETALHE.PAGAMENTO_ID " +
                            "WHERE " +
                            "      (PAGAMENTO_DETALHE.PAGAMENTO_DETALHE_ID = " + PAGAMENTO_DETALHE_ID + "  OR " + PAGAMENTO_DETALHE_ID + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.PAGAMENTO_ID = " + PAGAMENTO_ID + "  OR " + PAGAMENTO_ID + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID = " + FORMA_PAGAMENTO_ID + "  OR " + FORMA_PAGAMENTO_ID + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.PDT_PARCELA = " + PDT_PARCELA + "  OR " + PDT_PARCELA + " = '') AND " +
                            "      (PAGAMENTO_DETALHE.PDT_DATAPAMENTO = " + PDT_DATAPAMENTO + "  OR " + PDT_DATAPAMENTO + " = '') ";

            List<ES_Pagamento_detalhe> lista = new List<ES_Pagamento_detalhe>();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Pagamento_detalhe item = new ES_Pagamento_detalhe();
                    item.PAGAMENTO_DETALHE_ID = dr["PAGAMENTO_DETALHE_ID"].ToString();
                    item.PAGAMENTO_ID = dr["PAGAMENTO_ID"].ToString();
                    item.FORMA_PAGAMENTO_ID = dr["FORMA_PAGAMENTO_ID"].ToString();
                    item.PDT_PARCELA = dr["PDT_PARCELA"].ToString();
                    item.PDT_DATAPAMENTO = dr["PDT_DATAPAMENTO"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public ES_Pagamento_detalhe _obter_Pagamento_detalhe_by_id(
                                                                    string PAGAMENTO_DETALHE_ID,
                                                                    string PAGAMENTO_ID = ""
                                                                  )
        {
            if (string.IsNullOrEmpty(PAGAMENTO_DETALHE_ID) && string.IsNullOrEmpty(PAGAMENTO_ID))
                return new ES_Pagamento_detalhe();

            if (string.IsNullOrEmpty(PAGAMENTO_DETALHE_ID)) PAGAMENTO_DETALHE_ID = "0";
            if (string.IsNullOrEmpty(PAGAMENTO_ID)) PAGAMENTO_ID = "0";

            string sql = "SELECT " +
                                  "PAGAMENTO_DETALHE.PAGAMENTO_DETALHE_ID, " +
                                  "PAGAMENTO_DETALHE.PAGAMENTO_ID, " +
                                  "PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID, " +
                                  "PAGAMENTO_DETALHE.PDT_PARCELA, " +
                                  "PAGAMENTO_DETALHE.PDT_DATAPAMENTO, " +
                                  "PAGAMENTO_DETALHE.PDT_BANDEIRA, " +
                                  "PAGAMENTO_DETALHE.PDT_NUMEROCHEQUE " +
                            "FROM PAGAMENTO_DETALHE " +
                            "LEFT JOIN FORMA_PAGAMENTO ON FORMA_PAGAMENTO.FORMA_PAGAMENTO_ID = PAGAMENTO_DETALHE.FORMA_PAGAMENTO_ID " +
                            "LEFT JOIN PAGAMENTO ON PAGAMENTO.PAGAMENTO_ID = PAGAMENTO_DETALHE.PAGAMENTO_ID " +
                            "WHERE " +
                            "      (PAGAMENTO_DETALHE.PAGAMENTO_DETALHE_ID = " + PAGAMENTO_DETALHE_ID + "  OR " + PAGAMENTO_DETALHE_ID + " = 0) AND "+
                            "      (PAGAMENTO_DETALHE.PAGAMENTO_ID = " + PAGAMENTO_ID + "  OR " + PAGAMENTO_ID + " = 0) ";

            ES_Pagamento_detalhe item = new ES_Pagamento_detalhe();
            SqlConnection sqlConexao = new SqlConnection(conectionString);
            SqlDataReader dr = sqlServer.retornaDataReader(sql, conectionString, sqlConexao);
            try
            {
                while (dr.Read())
                {
                    item.PAGAMENTO_DETALHE_ID = dr["PAGAMENTO_DETALHE_ID"].ToString();
                    item.PAGAMENTO_ID = dr["PAGAMENTO_ID"].ToString();
                    item.FORMA_PAGAMENTO_ID = dr["FORMA_PAGAMENTO_ID"].ToString();
                    item.PDT_PARCELA = dr["PDT_PARCELA"].ToString();
                    item.PDT_DATAPAMENTO = dr["PDT_DATAPAMENTO"].ToString();
                    item.PDT_BANDEIRA = dr["PDT_BANDEIRA"].ToString();
                    item.PDT_NUMEROCHEQUE = dr["PDT_NUMEROCHEQUE"].ToString();

                }
                return item;
            }
            finally
            {
                sqlServer.fecharConexao(sqlConexao);
            }
        }


        public void _inserir_Pagamento_detalhe(
                                                string PAGAMENTO_DETALHE_ID,
                                                string PAGAMENTO_ID,
                                                string FORMA_PAGAMENTO_ID,
                                                string PDT_PARCELA,
                                                string PDT_DATAPAMENTO,
                                                string PDT_BANDEIRA,
                                                string PDT_NUMEROCHEQUE
                                                )
        {

            string sql = " INSERT INTO PAGAMENTO_DETALHE " +
                         "      ( " +
                         "          PAGAMENTO_ID, " +
                         "          FORMA_PAGAMENTO_ID, " +
                         "          PDT_PARCELA, " +
                         "          PDT_DATAPAMENTO,  " +
                         "          PDT_BANDEIRA, " +
                         "          PDT_NUMEROCHEQUE "+
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarNull(PAGAMENTO_ID) + ", " +
                              Util.retonarNull(FORMA_PAGAMENTO_ID) + ", " +
                              Util.retonarNull(PDT_PARCELA) + ", " +
                              Util.retonarAspas(Util.formataData(PDT_DATAPAMENTO, "dd/MM/yyyy", true), true) + ", " +
                              Util.retonarAspas(PDT_BANDEIRA, true) + ", " +
                              Util.retonarAspas(PDT_NUMEROCHEQUE, true) +
                 "      )";
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Pagamento_detalhe(
                                                string PAGAMENTO_DETALHE_ID,
                                                string PAGAMENTO_ID,
                                                string FORMA_PAGAMENTO_ID,
                                                string PDT_PARCELA,
                                                string PDT_DATAPAMENTO
                                                )
        {

            string sql = " UPDATE PAGAMENTO_DETALHE SET " +
                         "      PAGAMENTO_ID = " + Util.retonarAspas(PAGAMENTO_ID, true) + ", " +
                         "      FORMA_PAGAMENTO_ID = " + Util.retonarAspas(FORMA_PAGAMENTO_ID, true) + ", " +
                         "      PDT_PARCELA = " + Util.retonarAspas(PDT_PARCELA, true) + ", " +
                         "      PDT_DATAPAMENTO = " + Util.retonarAspas(PDT_DATAPAMENTO, true) +
                         " WHERE PAGAMENTO_DETALHE_ID =  " + PAGAMENTO_DETALHE_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Pagamento_detalhe(string PAGAMENTO_DETALHE_ID)
        {
            string sql = "DELETE FROM PAGAMENTO_DETALHE WHERE PAGAMENTO_DETALHE_ID = " + PAGAMENTO_DETALHE_ID;
            try
            {
                sqlServer._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}